import setIpc from './ipcMain'
import config from '@config/index'
import menuconfig from '../config/menu'
// import Update from './checkupdate'
import { BrowserWindow, Menu } from 'electron'
import { winURL } from '../config/StaticPath'

class MainInit {
  public winURL: string = ''
  public mainWindow: BrowserWindow = null

  constructor () {
    this.winURL = winURL
    if (process.env.NODE_ENV === 'development') {
      menuconfig.push({
        label: '开发者设置',
        submenu: [{
          label: '切换到开发者模式',
          accelerator: 'CmdOrCtrl+I',
          role: 'toggledevtools'
        }]
      })
    }
  }

  // 主窗口函数
  createMainWindow () {
    this.mainWindow = new BrowserWindow({
      height: 800,
      useContentSize: true,
      width: 800,
      minWidth: 800,
      show: false,
      frame: config.IsUseSysTitle,
      titleBarStyle: 'hidden',
      webPreferences: {
        contextIsolation: false,
        nodeIntegration: true,
        webSecurity: false,
        // 如果是开发模式可以使用devTools
        devTools: process.env.NODE_ENV === 'development',
        // devTools: true,
        // 在macos中启用橡皮动画
        scrollBounce: process.platform === 'darwin'
      }
    })
    // 赋予模板
    const menu = Menu.buildFromTemplate(menuconfig as any)
    // 加载模板
    Menu.setApplicationMenu(menu)
    // 加载主窗口
    this.mainWindow.loadURL(this.winURL)
    // 下载文件
    // electron-update注册
    // new Update(this.mainWindow)
    // 启用协议，这里暂时只用于自定义头部的时候使用
    setIpc.Mainfunc(this.mainWindow, config.IsUseSysTitle)
    // dom-ready之后显示界面
    this.mainWindow.webContents.once('dom-ready', () => {
      this.mainWindow.show()
    })
    // this.mainWindow.webContents.openDevTools({ mode: 'undocked', activate: true })
    // 开发模式下自动开启devtools
    if (process.env.NODE_ENV === 'development') {
      this.mainWindow.webContents.openDevTools({ mode: 'undocked', activate: true })
    }
    this.mainWindow.on('closed', () => {
      this.mainWindow = null
    })
    this.registerGlobalShortcut()
  }

  // 注册全局按键事件
  registerGlobalShortcut () {
  }

  // 初始化窗口函数
  initWindow () {
    return this.createMainWindow()
  }
}
export default MainInit
